 /**
 * 逻辑、功能相关描述: <br>
 *
 * @author 付湘辉  <br>
 * 编写日期：2008-8-6  <br>
 */
package com.ce.pms.charge.service;

import java.util.List;

import com.ce.pms.base.service.IPmsBaseService;
import com.ce.pms.charge.vo.PrePaySchSearchVO;
import com.ce.pms.charge.vo.PrePaySchVO;
import com.sitechasia.webx.core.support.Page;

/**
 * 	名称: com.ce.pms.charge.service.IPrePaySchService <br>
 *
 *
 * @author  付湘辉  <br>
 * Created on： 2008-8-6 <br>
 * @author <br>
 * update on： <br>
 * why: <br>
 */
public interface IPrePaySchService extends IPmsBaseService {

	/**
	 * <p>功能描述: 添加一个预交方案。</p>
	 * <h3>业务规则：</h3>
	 * <ol>
	 * <li>新的方案名称不能与已有的名称相同。</li>
	 * <li>如果新方案被设为默认值，会将系统中已有的默认方案设为非默认的方案，如果有的话。</li>
	 * <li>在实现中,先增加一个方案,然后处理其下的明细,如果有明细的话。</li>
	 * </ol>
	 * <h3><i>程序规则</i>：</h3>
	 * <ol>
	 * <li>新增成功后,会将新产生的主键设置到传入的VO对象中。</li>
	 * </ol>
	 * @param prePaySchVO
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-8-6  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public PrePaySchVO addPrePaySch(PrePaySchVO prePaySchVO);

	/**
	 * <p>功能描述: 修改一个预交方案。</p>
	 * <h3>业务规则：</h3>
	 * <ol>
	 * <li>新的方案名称不能除本预交方案之外的其它预交方案的名称相同。</li>
	 * <li>如果修改后方案被设为默认值，会将系统中已有的默认方案设为非默认的方案，如果有的话。</li>
	 * <li>在实现中,处理其下的明细,如果有明细的话。</li>
	 * </ol>
	 * @param prePaySchVO
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-8-7  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public PrePaySchVO editPrePaySch(PrePaySchVO prePaySchVO);

	/**
	 * 功能描述: 检查指定的预交方案名称是否存在 <br>
	 * @param schName
	 * @return true：存在 false：不存在
	 *
	 * @exception com.ce.pms.exception.BusinessException <br>
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-8-6  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public Boolean checkIsExistPrePaySch(String schName);

	/**
	 * 功能描述: 检查非指定id的预交方案名称是否存在 <br>
	 * @param schName
	 * @return true：存在 false：不存在
	 *
	 * @exception com.ce.pms.exception.BusinessException <br>
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-8-6  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public Boolean checkIsExistPrePaySch(Long prePaySchId, String schName);

	/**
	 * 功能描述: 根据id删除一个预交方案 <br>
	 * @param prePaySchId
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-8-7  <br>
	 * Edit author:  付湘辉<br>
	 * Edit on:  2008-11-28  <br>
	 * Why:  默认的方案不能删除   <br>
	 */
	public void deletePrePaySch(Long prePaySchId);

	/**
	 * 功能描述: 查询预交方案分页列表信息 <br>
	 * @param preSearch
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-8-6  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public Page queryPrePaySchListByPage(PrePaySchSearchVO preSearch);

	/**
	 * 功能描述: 通过预交方案id查询预交方案VO <br>
	 * @param prePayId
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-8-6  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public PrePaySchVO findPrePaySchById(Long prePayId);

	/**
	 * 功能描述: 通过预交款子账户id查询预交方案VO <br>
	 * @param prePayAccountId
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-8-6  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public PrePaySchVO findPrePaySchByPrePayAccountId(Long prePayAccountId);

	/**
	 * 功能描述: 得到所有预交方案列表 <br>
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-9-5  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public List<PrePaySchVO> getAllPrePaySchList();
}
